﻿using System;

using SBPweb.Communication.Shared.Library.Contacts;

namespace SBPweb.Communication.Shared.Library.Profiles
{

    public abstract class ProfileBase : IProfile
    {
        
        #region Constructor logic

        public ProfileBase(IContact contact)
        {
            this.Contact = contact;
        }

        #endregion

        #region Property accessors

        public IContact Contact
        {
            get;
            protected set;
        }

        public abstract string FullName
        {
            get;
            set;
        }

        public abstract string NickName
        {
            get;
            set;
        }

        public abstract DateTime BirthDay
        {
            get;
            set;
        }

        public abstract string Email
        {
            get;
            set;
        }

        #endregion

        #region Methods

        public abstract T Get<T>(string propertyName);

        public abstract void Put<T>(string propertyName, T value);

        #endregion

    }

}